Scala入门(四):文件操作

最近在做一个spark项目,顺便分享一下我的Scala入门过程。这一系列文章假定读者有一定的java或者其他面向对象编程语言基础。本文主要简单介绍文件的操作。

按惯例先上代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
val file = Source.fromFile("/Users/xiejing/Desktop/javascript")  
for (line <- file.getLines()) {
println(line)
}
file.close()

val webFile = Source.fromURL("https://www.baidu.com/");
webFile.foreach(print)
webFile.close

var javaWriter = new BufferedWriter(new FileWriter(new File("/Users/xiejing/Desktop/a.txt")))
for (i <- 4 to 10) {
javaWriter.write(i.toString())
}
javaWriter.flush()
javaWriter.close()

scala.io.Source.fromFile读取文件, getline获得一个iterator,遍历获取每一行,比Java方便多了。但这里有个问题,由于getline获得的是iterator,一旦你使用它完成遍历,iterator就失效了,所以如果需要反复的遍历文件,推荐Source.fromFile(…).getLines.toList,将文件内容转化为List,可以反复遍历,但代价是内存的消耗。

我们也可以用Source.fromURL来读取网络文件。

由于Scala运行在JVM上,因此可以无障碍的使用Java的类库,所以你可以使用java.io这个库来读取文件。